import { t } from 'i18next'
const json_i18n_key = {
	'52000': '该模板已被删除！',
	'52001': '该模板不存在！',
	'52004': '此模板不可以重复召开会议。',
	'52005': '该模板已不存在！',
	'52006': '您没有权限操作该模板！',
	'52007': '模板名称{{0}}已存在',
	'52009': '模板id不能为0',
	'52010': '此模板不可以重复召开会议。',
	'52011': '选择的电视墙风格已被删除不能保存或更新模板！',
	'52012': '超过个人模板存储数量上限',
	'10407': '请指定文件类型！',
	'10408': '请指定正确的文件类型！',
	'10409': '此文件已被删除！',
	'10001': 'ssoToken无效',
	'10002': '请求参数错误',
	'10003': 'API版本号不存在',
	'20002': '该会议下不存在智能设备',
	'20003': '会议纪要不存在',
	'20004': '会议纪要转写中',
	'20005': '会议未开启签到',
	'20006': '下载失败',
	'52100': '会议已被删除！',
	'52101': '其他审批者已经对该会议进行审批！',
	'52102': '会议信息失效！',
	'52103': '反馈的会议不存在！',
	'52104': '已达到最大文档上传数量，无法上传文件',
	'52105': '文件名称已存在，请调整',
	'52109': '传入参数解析错误',
	'52114': '操作超时',
	'52115': '会议召开失败，会议数据缺失，请联系管理员。',
	'52117': '操作异常，原因：会议正在进行中！',
	'52118': 'id:{{0}}会议信息不存在！',
	'52120': '操作异常，原因：会议已经结束！',
	'52121': '操作异常，原因：会议已经取消！',
	'52122': '操作异常，原因：会议状态异常',
	'52125': '该会议已开始，不可编辑！',
	'52127': '延长会议时间写数据库失败',
	'52130': '会议已结束',
	'52131': '该会议不能被修改！',
	'52134': '会议已开始！',
	'52138': '该会议已结束，不可编辑',
	'52139': '该会议已取消，不可编辑',
	'52140': '该会议已经不存在！',
	'52143': '预案最多只能保存20个！',
	'52144': '预案名称已经存在！',
	'52146': '与当前用户资源不匹配',
	'52147': '操作失败',
	'52148': '当前平台不支持此国密类型的会议',
	'52149': '当前平台不支持开启终端双向认证',
	'52150': '文件不存在',
	'52151': '文件服务不可用',
	'52152': '可用E164已存在，请勿重复初始化',
	'52153': '初始化可用E164异常！',
	'52154': '获取E164超时，请检查Redis数据！',
	'52155': '会议名称不合规范',
	'52156': '联系人联系方式不合规范',
	'52157': '请在当前时间后创建会议',
	'52159': '会议时长错误',
	'52160': '会议室冲突，未释放已预订会议室',
	'52161': '会议时间与已预订会议室时间不一致',
	'52162': '会议时间与已锁定会议室时间不一致',
	'52163': '获取redis锁超时，请稍后再试',
	'52164': '仅支持提前10分钟召开会议',
	'52165': '同一时段同一终端仅支持参加一个会议',
	'52166': '超过预约会议存储数量上限',
	'52167': '请添加至少2个的终端',
	'52168': '媒体资源暂不可用',
	'52169': '同一时段相同主被叫方仅支持参加一个点对点会议',
	'52170': '当前会议已失效，请重新申请',
	'52171': '存在无双流权限的终端，请重新设置！',
	'52172': '实体会议室占用失败',
	'51001': '没有返回mq消息',
	'51002': '返回NACK消息',
	'51101': '会议室不存在',
	'51102': '会议时间冲突',
	'51103': '不是会议参与人',
	'51104': '会议不存在',
	'51105': '会议待审批',
	'51106': '会议已取消',
	'51107': '会议已开始',
	'51108': '会议尚未开始',
	'51109': '会议已结束',
	'51110': '会议室名称已存在',
	'51111': '会议室已存在关联会议',
	'51112': '不是会议创建人',
	'51113': '通知类型不存在',
	'51114': '会议参与人不存在',
	'51115': '指定用户不存在',
	'51116': '会议模板不存在',
	'51117': '必要参数为空',
	'51118': '日期或时间格式错误',
	'51119': '开始时间大于结束时间',
	'51120': '视频会议不存在',
	'51121': '入会方式的类型不存在',
	'51122': '没有空闲的虚拟会议室',
	'51123': '资源已用完',
	'51124': '没有会议操作权限',
	'51125': '视频会议主题冲突',
	'51126': '会议室数量已达上限！',
	'51127': '智能级联模式，请为上级会议配置管理方',
	'52200': '保存点名人信息到redis数据库出错。',
	'52201': '批量轮询中自定义时间为{{0}}，不符合要求，请重新设置',
	'52202': '通道{{0}}中设置单通道轮询的自定义时间为{{1}}，不符合要求，请重新设置',
	'52204': '该电视墙风格不存在可用hdu通道，开启批量轮询失败！',
	'52205': '电视墙单通道轮询状态错误',
	'52207': '该录像名称已存在，请修改！',
	'52208': '视频选看失败',
	'52209': '音视频选看失败',
	'52210': '音频选看失败',
	'52211': '停止通道出现异常！',
	'52212': '通道信息配置冲突。',
	'52214': '会议不存在！',
	'52215': 'redis中获取的电视墙信息异常（电视墙的风格不存在）',
	'52216': 'hdu风格不能为空！',
	'52217': '画面合成未开启！',
	'52219': '文件Id不能为空！',
	'52220': '接受数据终端协作申请参数错误',
	'52221': '拒绝数据终端协作申请参数错误',
	'52222': '发送数据协作鉴权请求失败',
	'52223': '数据协作终端参数错误',
	'52224': '会议ID参数错误',
	'52225': '获取不到当前会议E164',
	'52226': '获取不到当前会议信息',
	'52227': '找不到对应的DCS服务器连接信息',
	'52228': '会议不存在或已结束',
	'52229': '会议不是视频会议',
	'52230': '视频会议不存在或已结束',
	'52232': '创会参数不能为空',
	'52233': '设置会议管理员参数错误',
	'52234': '找不到对应的终端信息',
	'52235': '终端E164参数不能为空',
	'52238': '获取协作方列表失败',
	'52239': '当前会议的内容共享模式为发言会场，终端不能发起双流',
	'52240': '此电视墙已从会议里删除',
	'52241': '找不到对应的VRS服务器连接信息',
	'52242': 'VRS连接池中没有可用链接来执行RPC请求！',
	'52243': '预案已不存在！',
	'52244': '会议名称校验失败',
	'52246': '当前轮询正在进行中，不能进行新的轮询',
	'52247': '当前会议没有设置管理方，不能开启主席轮询',
	'52248': '终端录像删除失败',
	'52250': '您输入的短消息已存在！',
	'99991': '会议室正在使用中，不可以修改！',
	'99992': '用户域不存在！',
	'99994': '会议未召开',
	'99995': '会议室名称已经存在！',
	'99996': '虚拟会议室不存在！',
	'52507': '电视墙方案至少配置一个通道信息！',
	'52508': '超出创建电视墙模板最大数量！',
	'52509': '此风格正在被会议使用，不可以修改',
	'52510': '请配置电视墙方案！',
	'52511': '用户域moid为空！',
	'52512': '电视墙模板名称为空！',
	'52513': '电视墙模板名称已存在！',
	'52514': '超出预订期限限制',
	'52515': '选择的电视墙风格已被删除,保存会议信息失败！',
	'52516': '预案选择的电视墙风格已被删除,保存预案失败！',
	'52519': '超过虚拟会议室存储数量上限',
	'52601': '用户域不存在！',
	'52608': '您的用户域没有端口会议权限，召开会议失败',
	'52609': '您的用户域没有SFU纯转发会议权限，召开会议失败',
	'52610': '您的用户域没有H265权限，召开会议失败',
	'52611': '您的用户域没有RTC接入权限，召开会议失败',
	'52612': '您的用户域没有RTC接入权限和SFU纯转发会议权限，召开会议失败',
	'52613': '用户信息异常',
	'52671': '业务未返回相关nack错误码！',
	'52672': '该会议室区域不存在或无会议室',
	'52673': '未分配会议号段，请联系管理员',
	'52674': '参数校验失败',
	'52676': '当前数据中心不可达,无法操作',
	'52677': '非法路径进入会管,无法操作',
	'99997': '平台会议审批功能开启，不支持创建会议，可通过预约会议开会',
	'99999': '系统处理异常',
	'27502': '您创建的模板保存失败，请重新尝试。',
	'27503': '您创建的模板保存失败，请重新尝试。',
	'27501': '您创建的模板保存失败，请重新尝试。',
	'20127': '操作失败',
	'20828': '仅允许在一个通道显示会议跟随，不支持在多个通道中显示',
	'20838': '级联会议仅允许在一个通道显示，不支持在多个通道中显示',
	'20827': '仅允许在一个通道显示发言方跟随，不支持在多个通道中显示',
	'20837': '仅允许在一个通道显示内容共享跟随，不支持在多个通道中显示',
	'20847': '当前为纯转发会议，开启画面合成失败',
	'20836': '该终端类型不支持在多个通道中显示',
	'20822': '您的操作过于频繁',
	'20842': '仅允许在一个通道显示管理方跟随，不支持在多个通道中显示',
	'20823': '选看画面合成失败',
	'20102': '当前会议总数已经达到最大值，请稍候召开会议',
	'20101': '当前没有空闲的会议资源，召开会议失败',
	'21760': '当前没有空闲的会议资源，召开会议失败',
	'20171': '当前会议总数已达到最大值。',
	'27511': '您的用户域没有高清会议权限，无法召开1080P和4K会议',
	'27512': '您的会议名称与其他会议重名，请换个会议名称',
	'21759': '当前没有空闲的会议资源，召开会议失败',
	'27506': '当前没有空闲会议资源，创建会议失败',
	'21758': '当前没有空闲的会议资源，召开会议失败',
	'27507': '会议已经开启。',
	'20107': '您的会议号码与其他会议重复，请换个会议号码',
	'20105': '您的会议名称与其他会议重名，请换个会议名称',
	'21751': '端口资源不足，可能导致终端无法正常进行视频交流，您可申请更多资源',
	'20509': '视频适配资源不足，选看失败',
	'20529': '点名时无法选看',
	'20505': '选看终端无法接收或是选看目标不在发送，无法进行指定选看',
	'20435': '您指定的{{0}}不在您的会议中',
	'20347': '当前处于会议强制广播模式，您无法进行此操作',
	'20063': '请勿重复操作',
	'20857': '当前版本暂不支持单独停止录像或者直播功能',
	'20801': '请勿重复操作',
	'20856': '当前版本暂不支持单独开启录像或者直播功能',
	'21744': '会议回传带宽不足，录像开启失败',
	'20346': '语音激励功能已开启，不可手动设置发言人。终端发言可自动激励成为发言人。',
	'20431': '当前发言方没有发送图像和声音，不能成为发言方',
	'20437': '您指定的{{0}}已经为发言方',
	'20444': '开启失败，终端能力超过该通道能力',
	'20055': '画面合成未开启',
	'20810': '请先关闭画面合成广播，再开启会议放像',
	'20356': '会议正在开启混音，请稍后',
	'20341': '语音激励和会议轮询不能同时开启，停止会议轮询，去设置…',
	'20849': '当前为纯转发会议，开启语音激励失败',
	'20848': '当前为纯转发会议，开启混音失败',
	'20317': '定制混音和语音激励不能同时开启，关闭语音激励，去设置…',
	'20344': '您已通过语音激励设置发言人，不可以手动取消发言人',
	'20804': '会议放像中，不支持此操作',
	'20439': '会议中无发言人',
	'20850': '该终端不支持自主画面合成',
	'21664': '由于资源不足，画面合成失败',
	'20845': '自主多画面的数量已达到上限,包含终端自主和HDU自主',
	'20819': '会议正在结束混音，请稍后',
	'27505': '当前会议总数已达到最大值。',
	'20531': '您不能指定下级会场作为点名人',
	'20409': '您不能邀请会议本身',
	'20432': '您指定的{{0}}已经为管理方',
	'20446': '电话终端无法设定为管理方',
	'30301': '选择的机房发生了一些错误导致创会失败，请选择其它机房尝试或联系管理员处理',
	'30300': '系统内部发生了一些错误导致创会失败，请稍后尝试或联系管理员处理',
	'30303': '系统内部发生了一些错误导致创会失败，请稍后尝试或联系管理员处理',
	'30302': '当前无可用机房，请稍后尝试或联系管理员处理',
	'30305': '系统内部发生了一些错误导致创会失败，请稍后尝试或联系管理员处理',
	'30304': '当前会议号码已存在，会议创建失败',
	'60010': '智能会议不存在',
	'60011': '语音资源不足',
	'60012': '申请资源失败',
	'60013': 'Asr字幕订阅失败',
	'60014': 'Asr启停失败',
	'25501': '未知错误',
	'25502': '超时',
	'25503': '初始化错误',
	'25504': '服务器错误',
	'25505': '未知消息',
	'25551': '用户无权限',
	'25552': '用户名或密码错误',
	'25553': '用户失效',
	'25554': '用户已存在',
	'25555': '用户不存在',
	'25556': '用户超过最大个数',
	'25557': '用户token失效',
	'25601': '会议已存在',
	'25602': '会议不存在',
	'25603': '会议超过最大个数',
	'25604': '会议中该用户无效',
	'25605': '会议中不存在该用户',
	'25606': '会议中该用户无权限',
	'25607': '协作方超过最大个数',
	'25608': '终端拒绝入会',
	'25609': '终端忙',
	'25610': '终端不可达',
	'25611': '终端已在会议中',
	'25612': '未知错误',
	'0': '未知错误',
}
/**
 * 后台异常不给 description ，通过 error_code 判断统一增加 description
 * 情况分为两种，有error_code 和无 error_code
 *
 * 有 error_code 情况，存在字符串变量，需翻译后，自行替换，
 * 例： "您指定的{{0}}已经为管理方" ,替换 {{0}} ，替换内容存在于 error_data , error_data是obj，可以按照数组顺序进行替换
 */
export const updateDescription = (d: FetchRes<any> | FetchUse<any>) => {
	if (!d.success) {
		if (typeof d.error_code === 'number') {
			if (Object.keys(json_i18n_key).indexOf(d.error_code + '') > -1) {
				d.description =
					t(`${json_i18n_key[(d.error_code + '') as keyof typeof json_i18n_key]}`) + `(${d.error_code})`

				if (d.error_data && Object.prototype.toString.call(d.error_data) === '[object Object]') {
					Object.keys(d.error_data).forEach((x) => {
						const val = d.error_data[x]
						d.description = d.description.replace('{{' + x + '}}', val)
					})
				}
			} else {
				d.description = t('未知错误') + `(${d.error_code})`
			}
		} else {
			// d.description = t('操作失败') //前台业务存在自己定制异常提示，先注释
		}
	}
	return d
}
